Data stored in relational and object-relational constructs can be optimized in a variety of ways that are well understood. Hierarchy-based storage mechanisms allow data to be stored as files and folders, where the data eventually resides in relational tables. Queries can be posed on the various folders and files to search on the metadata or the data stored in the files. However, since these queries are often across a variety of files and folders that are mapped to different relational tables, it is not readily possible to take advantage of the optimizations offered by the underlying relational storage for the data.
Logical hierarchical storage of data is becoming popular due in part, for example, to (a) search engine technologies, and (b) XML data storage. In such cases, the queries tend to be either XQuery (or JSR 170 type XPath query) or SQL queries on the hierarchical data. For example, XQuery uses doc( ) and collection( ) functions which can be mapped to the hierarchical storage.
Currently, relational database systems can optimize queries on relational and XML tables very efficiently, however, the same technology cannot be directly used if the queries are posed against the database in which data is hierarchically stored because the data stored in the database is heterogeneous. Because of the widespread use of hierarchical storage of data, there is room for improvement in achieving relational performance for queries over hierarchical storage.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.